import cv2 as cv
import numpy as np
img =cv.imread('C:\\Users\\asus\\Pictures\\Camera Roll\\timg.jpg',1)
cv.imshow('picture',img)
'''
    dst=cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
    src	原图像
    dst	目标图像，与原图像尺寸和通过数相同
    ddepth	目标图像的所需深度
    kernel	卷积核（或相当于相关核），单通道浮点矩阵;如果要将不同的内核应用于不同的通道，请使用拆分将图像拆分为单独的颜色平面，然后单独处理它们。
    anchor	内核的锚点，指示内核中过滤点的相对位置;锚应位于内核中;默认值（-1，-1）表示锚位于内核中心。
    detal	在将它们存储在dst中之前，将可选值添加到已过滤的像素中。类似于偏置。
    borderType	像素外推法，参见BorderTypes
'''
#模糊操作
# 均值模糊 去随机噪声有很好的去燥效果
def blur_demo(image):
    dst = cv.blur(image, (5, 5))
    cv.imshow("blur_demo", dst)
# 中值模糊去除椒盐噪声
def median_blur_demo(image):
    dst = cv.medianBlur(image, 5)
    cv.imshow("median_blur_demo", dst)
# 自定义模糊
def custom_blur_demo(image):
    # kernels = np.ones([5, 5], np.float32)/25
    kernels = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
    dst = cv.filter2D(image, -1, kernel=kernels)
    cv.imshow("custom_blur_demo", dst)

#锐化操作(与自定义模糊类似)
kernel =np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
img1 =cv.filter2D(img,-1,kernel)#cv.filter2d()
cv.imshow('other',img1)

blur_demo(img)
median_blur_demo(img)
custom_blur_demo(img)
cv.waitKey(0)
cv.destroyAllWindows()